package com.xuecheng.content.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.dto.CourseTeacherDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import com.xuecheng.content.entity.CourseBase;

import java.util.List;

/**
 * <p>
 * 课程基本信息 服务类
 * </p>
 *
 * @author itcast
 * @since 2021-08-04
 */
public interface CourseBaseService extends IService<CourseBase> {

    /**
     * 机构查询课程信息方法
     * @param params  -PageRequestParams-存储分页数据
     * @param model   -QueryCourseModel-接收前端传入的参数
     * @param companyId -Long-从请求头中解析出的 机构ID
     * @return   PageVO-包含 当前页，每页条数，总条数，前段显示数据(课程信息CourseBase)
     */
    PageVO<CourseBaseDTO> queryCourseBase(PageRequestParams params, QueryCourseModel model,Long companyId);

    /**
     * 添加课程基本信息
     * @param baseVO  --CourseBaseVO--前端传入参数
     * @param companyId --Long--从请求头中解析出的 机构ID
     * @return  --CourseBaseDTO 返回DTO类
     */
    CourseBaseDTO getCourse(CourseBaseVO baseVO,Long companyId);

    /**
     * 根据课程ID查询课程基本信息
     * @param courseBaseId --Long--前端传来的 课程ID
     * @param companyId    --Long--从请求头中解析出的 机构ID
     * @return --CourseBaseDTO
     */
    CourseBaseDTO getCourseBaser(Long courseBaseId,Long companyId);

    /**
     * 修改课程信息
     * @param baseVO --CourseBaseVO--前端传入参数
     * @param companyId --Long--从请求头中解析出的 机构ID
     * @return --CourseBaseDTO
     */
    CourseBaseDTO modifyCourseBaser(CourseBaseVO baseVO,Long companyId);

    /**
     * 根据课程ID 逻辑删除课程基本信息
     * @param courseBaseId --Long--前端传来的 课程ID
     * @param companyId --Long--从请求头中解析出的 机构ID
     * @return -- Boolean -返回数据
     */
    Boolean removeCourseBase(Long courseBaseId,Long companyId);

    /**
     * 根据课程ID 提交课程基本信息
     * @param courseBaseId --Long--前端传来的 课程ID
     * @param companyId --Long--从请求头中解析出的 机构ID
     */
    void modifyCourseBaseById(Long courseBaseId,Long companyId);

    /**
     * 运营根据课程ID 审核课程
     * @param courseBaseId --Long--前端传来的 课程ID
     * @param auditMind    --String--前端传来的审核意见
     * @param auditStatus  --String--前端传来的审核状态
     */
    void modifyMCourseBaseById(Long courseBaseId,String auditMind,String auditStatus);

    /**
     * 根据课程ID 查询教师信息
     * @param courseBaseId --Long--前端传来的 课程ID
     * @param companyId --Long--从请求头中解析出的 机构ID
     * @return  --List<CourseTeacherDTO> -- 集合 包含当前课程的全部教师信息
     */
    List<CourseTeacherDTO> queryCourseTeachers(Long courseBaseId,Long companyId);

    /**
     * 根据课程ID 机构ID查询课程基本信息
     * @param courseBaseId --Long -课程ID
     * @param companyId  --Long -机构ID
     * @return --CourseBase --课程基本信息
     */
    CourseBase getCourseBase(Long courseBaseId,Long companyId);

    /**
     * 课程计划绑定媒资查询 课程基本信息
     * @param courseBaseId --Long -课程ID
     * @param companyId --Long -机构ID
     * @return --CourseBaseDTO --课程基本信息
     */
    CourseBaseDTO queryCourseByID(Long courseBaseId,Long companyId);
}
